package org.huawei260.String;

import static org.huawei260.String.O0259_字符串划分.O0259字符串划分.findSplitPoint;

/**
 * @Auther: qingle
 * @Date: 2024/10/27-14:59
 * @Description:
 * @version: 1.0
 */
public class O0259_字符串划分 {

	/**
	 * 给定一个小写字母组成的字符串
	 * s
	 * s，请找出字符串中两个不同位置的字符作为分割点，使得字符串分成的三个连续子串且子串权重相等，注意子串不包含分割点。
	 * 若能找到满足条件的两个分割点，请输出这两个分割点在字符串中的位置下标，若不能找到满足条件的分割点请返回0,0。
	 * 子串权重计算方式为:子串所有字符的ASCII码数值之和。
	 *
	 * 输入描述
	 * 输入为一个字符串，字符串由a~z，26个小写字符组成，
	 * 5≤字符串长度≤200。
	 *
	 * 输出描述
	 * 输出为两个分割点在字符串中的位置下标，以逗号分隔
	 *
	 * 示例一
	 * 输入
	 * acdbbbca
	 * 输出
	 * 2,5
	 */
	public static class O0259字符串划分 {


		// 计算每个字符的ASCII码值之和，并判断是否可以找到满足条件的分割点
		public static String findSplitPoint(String s) {
			int[] asciiSum = new int[26];
			int totalSum = 0;
			for (int i = 0; i < s.length(); i++) {
				int index = s.charAt(i) - 'a';
				totalSum += index;
			}

			int totalSumTemp = totalSum/3;

			if(s.length() <= 1) return "0,0";

			int sum1 = 0;
			int m = 0;
			int n = 0;
			for (int i = 0; i < s.length() - 1; i++) {
				sum1 += s.charAt(i) - 'a';
				if(sum1 == totalSumTemp) {
					m = i;
				}
				if(sum1 == totalSumTemp*2) {
					n = i;
				}
			}
			return m!=0 && n!=0 ? "0,0" :m+","+n;
		}
	}

	public static void main(String[] args) {
		String s = "acdbbbca";
		System.out.println(findSplitPoint(s));
	}

}
